package com.zzh.partnersys.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 任务表（支撑任务拆分、分配�?�进度跟踪）
 * </p>
 *
 * @author zzh
 * @since 2024-08-11
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("task")
public class TaskDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 任务唯一ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 任务标题（如“接口开�?用户登录接口”）
     */
    @TableField("taskTitle")
    private String taskTitle;

    /**
     * �?属队伍ID（关联team表id�?
     */
    @TableField("teamId")
    private Long teamId;

    /**
     * 父任务ID�?表示根任务，�?关联本表格id，支撑任务父子级关联�?
     */
    @TableField("parentTaskId")
    private Long parentTaskId;

    /**
     * 任务负责人ID（多个用逗号分隔，关联user表id�?
     */
    @TableField("assigneeUid")
    private String assigneeUid;

    /**
     * 任务描述（如“完成登录接口的POST请求，返回JWT token”）
     */
    @TableField("taskDesc")
    private String taskDesc;

    /**
     * 优先级：1-低，2-中，3-高（影响任务排序�?
     */
    private Integer priority;

    /**
     * 任务状�?�：0-未开始，1-进行中，2-已完成，3-延期
     */
    private Integer status;

    /**
     * 任务�?始时�?
     */
    @TableField("startTime")
    private LocalDateTime startTime;

    /**
     * 任务截止时间（到期未完成自动更新为�?�延期�?�）
     */
    @TableField("deadline")
    private LocalDateTime deadline;

    /**
     * 任务进度�?-100，手动更新或按子任务完成率汇总）
     */
    private Integer progress;

    /**
     * 验收标准（如“代码�?�过率≥90%，文档完整�?�≥80%”）
     */
    @TableField("verifyStandard")
    private String verifyStandard;

    /**
     * 任务创建者ID（关联user表id�?
     */
    @TableField("creatorUid")
    private Long creatorUid;

    /**
     * 创建时间
     */
    @TableField("createTime")
    private LocalDateTime createTime;

    /**
     * 更新时间（进�?状�?�变更）
     */
    @TableField("updateTime")
    private LocalDateTime updateTime;

    /**
     * 逻辑删除�?-正常�?-删除
     */
    @TableField("isDelete")
    @TableLogic
    private Integer isDelete;

}